package com.itcam.maker.template.model;

import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;

/**
 * 模板生成器模型配置类
 * 该类用于配置模板生成器所需的模型信息
 */
@Data
public class TemplateMakerModelConfig {

    /**
     * 模型信息配置列表
     * 包含了模板生成器所需的所有模型的配置信息
     */
    private List<ModelInfoConfig> models;

    /**
     * 模型组配置
     * 用于配置模型组的条件、键和名称
     */
    private ModelGroupConfig modelGroupConfig;

    /**
     * 模型信息配置内部类
     * 该类用于配置单个模型的详细信息
     */
    @NoArgsConstructor
    @Data
    public static class ModelInfoConfig {

        /**
         * 字段名称
         * 该名称指定了模型中的字段名
         */
        private String fieldName;

        /**
         * 字段类型
         * 该类型指定了模型中的字段类型
         */
        private String type;

        /**
         * 字段描述
         * 该描述指定了模型中的字段描述
         */
        private String description;

        /**
         * 默认值
         * 该值指定了模型中的字段默认值
         */
        private Object defaultValue;

        /**
         * 缩写
         * 该缩写指定了模型中的字段缩写
         */
        private String abbr;

        /**
         * 替换文本
         * 该文本指定了模型中的字段用于替换哪些文本
         */
        private String replaceText;
    }

    /**
     * 模型组配置内部类
     * 该类用于配置模型组的详细信息
     */
    @Data
    public static class ModelGroupConfig {

        /**
         * 条件
         * 该条件指定了模型组的条件
         */
        private String condition;

        /**
         * 键
         * 该键指定了模型组的键
         */
        private String groupKey;

        /**
         * 名称
         * 该名称指定了模型组的名称
         */
        private String groupName;

        /**
         * 分组的类型
         */
        private String type;

        /**
         * 分组的描述
         */
        private String description;
    }
}

